package com.java.yz.day11.ketang;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

/*List接口的特有成员方法
    void add(int index,E element)
    E remove(int index)
    E get(int index)
    E set(int index,E element)
    ListIterator listIterator()

    由于List提供了相关的索引的概念，这些方法都与索引有关
 */
public class ListDemo2 {
    public static void main(String[] args) {
        //创建一个list对象
        List list =new ArrayList();
        list.add("hello");
        list.add("world");
        list.add("java");
        list.add("hadoop");
        list.add("hive");
        System.out.println(list);
        System.out.println("-----------------------------------");
        //void add(int index,E element) 在指定位置进行添加元素
        list.add(2,"mysql"); //从索引为2的位置进行添加，java没有负数的索引
        System.out.println(list);

        //E remove(int index) 在指定位置移除元素  这里的E就相当于Object
        list.remove(1);  //移除下标为1的元素   world被移除了
        System.out.println(list);

        // E get(int index) 获取指定下标的元素
        System.out.println(list.get(0));

        //E set(int index,E element)  替换，在指定下标位置进行替换元素
        list.set(0,"haha");
        System.out.println(list);  //下标为0的位置是hello 被替换成了haha

        // ListIterator listIterator()  list特有的迭代器
        //除了父类接口Collection的hashNext和Next两个方法外，他还特有hasPrevious和Previous两个方法
        //hasPrevious 判断上一个位置是否有元素   Previous  获取上一个元素
        Iterator iterator = list.iterator();
        while (iterator.hasNext()){
            Object next = iterator.next();
            String s = (String) next;
            System.out.println(s);
        }
        System.out.println("---------------------------");
        ListIterator listIterator = list.listIterator();
        while (listIterator.hasPrevious()){
            Object previous = listIterator.previous();
            String previous1 = (String) previous;
            System.out.println(previous1);
        }
    }
}
